﻿Imports WSEntidades
Imports Utilerias
Imports WSDatos

Public Class UdeMBL
    Public Function RegistrarUnidadDeMedida(ByVal TokenConexion As String, ByVal UdeM As UdeMBE, ByRef detResp As DetalleRespuesta) As Boolean
        Dim UdeMDAL As UdeMDAL = New UdeMDAL("")
        detResp.Mensajes = ""
        Try
            TokenConexion = RijndaelSimple.desencriptaDefault(TokenConexion)
            If (EsValidoParaRegistrar(UdeM, detResp.Mensajes)) Then
                UdeMDAL = New UdeMDAL(TokenConexion)
                If (UdeMDAL.existeUdeM(UdeM.DesUdeM)) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_PreviamenteRegistrado,
                                             "Existe un registro con la descripción de la unidad de medida indicada." & vbCrLf & detResp.Mensajes)
                    Return False
                Else
                    If (UdeMDAL.registraUdeM(UdeM)) Then
                        detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                                 "La Unidad de Medida se registro con éxito.")
                        Return True
                    Else
                        detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueRegistrado,
                                                 "La Unidad de Medida no pudo ser registrada en el sistema." & vbCrLf & detResp.Mensajes)
                        Return False
                    End If
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                      "La Unidad de Medida no es valida para registrar: " & vbCrLf & detResp.Mensajes)
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "UdeMBL.RegistrarUnidadDeMedida")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al registrar Unidad de Medida: " & ex.Message)
            Return False
        Finally
            UdeMDAL = Nothing
        End Try
    End Function

    Private Function EsValidoParaRegistrar(ByRef UdeM As UdeMBE, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try
            If (UdeM.IdUdeM <= 0) Then
                mensaje &= "El Id de la Unidad de Medida debe ser mayor a 0 ." & vbCrLf
            End If

            If (String.IsNullOrWhiteSpace(UdeM.DesUdeM)) Then
                mensaje &= "La descripcion de la unidad de medida es obligatoria, no puede ir el campo vacio." & vbCrLf
            Else
                UdeM.DesUdeM = UdeM.DesUdeM.Trim
                If (UdeM.DesUdeM.Length > 255) Then
                    UdeM.DesUdeM = UdeM.DesUdeM.Substring(0, 255)
                End If
            End If

            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "UdeMBL.EsValidoParaRegistrar")
            mensaje &= ex.Message
            Return False
        End Try
    End Function

    Public Function ActualizaUdeM(ByVal TokenConexion As String, ByVal UdeM As UdeMBE, ByRef detResp As DetalleRespuesta) As Boolean
        detResp.Mensajes = ""
        Dim UdeMDAL As UdeMDAL = New UdeMDAL("")
        Try
            TokenConexion = RijndaelSimple.desencriptaDefault(TokenConexion)
            If (EsValidoParaRegistrar(UdeM, detResp.Mensajes)) Then
                UdeMDAL = New UdeMDAL(TokenConexion)
                If (UdeMDAL.actualizaUdeM(UdeM, detResp.Mensajes)) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK, "Datos Unidad De Medida Actualizados.")
                    Return True
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueActualizado,
                                             "No se pudo realizar la actualización de Datos de Unidad de Medida." & vbCrLf & _
                                             "Verifique que el Id de Unidad de Medida esté registrado." & vbCrLf & detResp.Mensajes)
                    Return False
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                         "La informacion no es valida para actualizar: " & vbCrLf & detResp.Mensajes)
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "UdeMBL.ActualizaUdeM")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al actualizar Unidad de Medida: " & ex.Message)
            Return False
        Finally
            UdeMDAL = Nothing
        End Try
    End Function

    Public Function cambiaEstatusUnidadMedida(ByVal tokenConexion As String, ByVal IdUdeM As Integer, ByVal setActivo As Boolean, _
                                              ByRef detResp As DetalleRespuesta) As Boolean
        detResp.Mensajes = ""
        Dim UdeMDAL As UdeMDAL = New UdeMDAL("")
        Try
            TokenConexion = RijndaelSimple.desencriptaDefault(TokenConexion)
            If (EsValidoParaGetUdeM(IdUdeM, detResp.Mensajes)) Then
                UdeMDAL = New UdeMDAL(tokenConexion)
                If (UdeMDAL.cambiaEstatus(IdUdeM, setActivo)) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK, "Estatus de Unidad De Medida Actualizado.")
                    Return True
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueActualizado,
                                             "No se pudo realizar la actualización del Estatus de la Unidad de Medida." & vbCrLf & _
                                             "Verifique que el Id de Unidad de Medida esté registrado." & vbCrLf & detResp.Mensajes)
                    Return False
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                         "La informacion no es valida para actualizar: " & vbCrLf & detResp.Mensajes)
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "UdeMBL.cambiaEstatusUnidadMedida")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al actualizar estatus de Unidad de Medida: " & ex.Message)
            Return False
        Finally
            UdeMDAL = Nothing
        End Try
    End Function

    Public Function GetUdeM(ByVal tokenConexion As String, ByVal IdUdeM As Integer, ByRef detResp As DetalleRespuesta) As UdeMBE
        detResp.Mensajes = ""
        Dim UdeMDAL As UdeMDAL = New UdeMDAL("")
        Dim UdeMBE As UdeMBE
        Try
            tokenConexion = RijndaelSimple.desencriptaDefault(tokenConexion)
            If (EsValidoParaGetUdeM(IdUdeM, detResp.Mensajes)) Then
                UdeMDAL = New UdeMDAL(tokenConexion)
                UdeMBE = UdeMDAL.getUdeM(IdUdeM)
                If (UdeMBE IsNot Nothing) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                             "Se obtuvo la información de la unidad de medida con éxito.")
                    Return UdeMBE
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_RegistroInexistenteOInactivo,
                                             "No se obtuvo la información de la unidad de medida" & vbCrLf & detResp.Mensajes)
                    Return Nothing
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                         "El ID de la Unidad de Medida proporcionado no existe: " & vbCrLf & detResp.Mensajes)
                Return Nothing
            End If
        Catch ex As Exception
            Log.LogException(ex, "UdeMBL.GetUdeM")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al obtener información de la Unidad de Medida: " & ex.Message)
            Return Nothing
        Finally
            UdeMDAL = Nothing
            UdeMBE = Nothing
        End Try
    End Function

    Private Function EsValidoParaGetUdeM(ByRef IdUdeM As Integer, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try
            If (String.IsNullOrEmpty(IdUdeM)) Then
                mensaje &= "El campo ID de la Unidad de Medida no puede ir  vacio." & vbCrLf
            Else
                If (IdUdeM <= 0) Then
                    mensaje &= "El Id de la Unidad de Medida debe ser mayor a 0 ." & vbCrLf
                End If
            End If

            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "UdeMBL.EsValidoParaGetUdeM")
            mensaje &= ex.Message
            Return False
        End Try
    End Function

    Public Function GetListadoUdeM(ByVal tokenConexion As String, ByVal DesUdeM As String, ByVal estatus As Enumeraciones.estatusParaBusquedas,
                                   ByVal pRegistroInicial As Integer, ByVal pPageSize As Integer,
                                   ByVal pSortColumn As Enumeraciones.campoOrdenamiento, ByVal pSortDirection As Enumeraciones.tipoOrdenamiento,
                                   ByRef pTotalRegistros As Integer,
                                   ByRef detResp As DetalleRespuesta) As List(Of UdeMBE)
        detResp.Mensajes = ""
        pTotalRegistros = 0
        Dim UdeMDAL As UdeMDAL = New UdeMDAL("")
        Dim listUdeMBE As List(Of UdeMBE)
        Try
            tokenConexion = RijndaelSimple.desencriptaDefault(tokenConexion)
            UdeMDAL = New UdeMDAL(tokenConexion)
            listUdeMBE = UdeMDAL.getListadoUdeM(DesUdeM, estatus, pRegistroInicial, pPageSize, pSortColumn, pSortDirection, pTotalRegistros)
            If (listUdeMBE IsNot Nothing) Then
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                         "Se obtuvo el listado de unidades de medida con éxito.")
                Return listUdeMBE
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoObtuvoRegistrosParaListado,
                                         "No se obtuvo el listado de las unidades de medida" & vbCrLf & detResp.Mensajes)
                Return Nothing
            End If
        Catch ex As Exception
            Log.LogException(ex, "UdeMBL.GetListadoUdeM")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al obtener el listado de unidades de medida: " & ex.Message)
            Return Nothing
        Finally
            UdeMDAL = Nothing
            listUdeMBE = Nothing
        End Try
    End Function

End Class
